package com.sikaryofficial.backend.domain.dto.req;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.sikaryofficial.backend.annotation.SensitiveDeserializer;
import com.sikaryofficial.system.api.model.att.AttachmentResp;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Email;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 举报对象 report_t
 * 
 * @author qinjinyuan
 * @date 2023-11-08
 */
@Getter
@Setter
@ToString
@ApiModel(value = "举报对象入参", description = "举报对象入参")
public class ReportReq
{
    /** 举报ID */
    @ApiModelProperty(value = "举报ID" ,hidden = true)
    private Long reportId;
    /** 举报关联对象ID */
    @ApiModelProperty(value = "举报关联对象ID,当businessType=4,为空")
    private Long relationId;
    /** 举报类型：1-淫秽色情,2-营销广告,3-网络暴力,4-违法信息,5-虚假谣言,6-诈骗内容,7-恐怖主义内容,8-侵犯版权内容,9-仇恨言论,10-骚扰、欺凌和威胁,11-违法内容,12-涉及儿童安全,13-其他不良内容 */
    @ApiModelProperty(example="14",value = "举报类型：1-淫秽色情,2-营销广告,3-网络暴力,4-违法信息,5-虚假谣言,6-诈骗内容,7-恐怖主义内容,8-侵犯版权内容,9-仇恨言论,10-骚扰、欺凌和威胁,11-违法内容,12-涉及儿童安全,13-其他不良内容,14-仿品举报")
    @NotNull(message = "the reportType is null")
    private Integer reportType;

    /** 业务类型：1-店铺,2-评论,3-评论回复 4-仿品举报
     * */
    @ApiModelProperty(value = "业务类型：1-店铺,2-评论,3-评论回复,4-仿品举报,5-文章内容,6-文章评价内容,7-文章评价回复内容",example = "4")
    @NotNull(message = "the businessType is null")
    @Min(value = 1, message = "businessType could not less than 1")
    @Max(value = 7, message = "businessType could not greater than 7")
    private Integer businessType;

    /**
     * 店铺图片
     */
    @ApiModelProperty(value = "产品图片列表")
    private List<AttachmentResp> productImage;

    /**
     * 店铺图片
     */
    @ApiModelProperty(value = "店铺图片列表")
    private List<AttachmentResp> storeImage;

    /**
     * 店铺名称
     */
    @ApiModelProperty(value = "店铺名称")
    @Length(max = 200, message = "storeName can not exceed 20 characters")
    private String storeName;

    /**
     * 店铺地址ID
     */
    @ApiModelProperty(value = "店铺地址ID")
    private Long addressId;

    /**
     * 地址详情
     */
    @ApiModelProperty(value = "地址详情")
    @Length(max = 256, message = "addressDetail can not exceed 20 characters")
    private String addressDetail;

    /**
     * 名
     */
    @ApiModelProperty(value = "名")
    @Length(max = 30, message = "firstName can not exceed 20 characters")
    private String firstName;

    /**
     * 姓
     */
    @ApiModelProperty(value = "姓")
    @Length(max = 30, message = "lastName can not exceed 20 characters")
    private String lastName;

    /**
     * 邮箱
     */
    @ApiModelProperty(value = "邮箱")
    @Length(max = 50, message = "email can not exceed 50 characters")
    @Email(regexp = "[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+", message = "email format error.")
    private String email;

    /**
     * 电话号码
     */
    @ApiModelProperty(value = "电话号码")
    @Length(max = 20, message = "phoneNumber can not exceed 20 characters")
    private String phoneNumber;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @Length(max = 1000, message = "remark can not exceed 1000 characters")
    @JsonDeserialize(using = SensitiveDeserializer.class)
    private String remark;

    /**
     * 国家
     */
    @ApiModelProperty(value = "国家")
    private String country;
    /**
     * 区域
     */
    @ApiModelProperty(value = "区域")
    private String area;
    /**
     * 城市
     */
    @ApiModelProperty(value = "城市")
    private String city;
    /**
     * 区县
     */
    @ApiModelProperty(value = "区县")
    private String county;
}
